home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 676-700 / 681 / term / source.lha / ModemPanel.c < prev    next >
C/C++ Source or Header  |  1992-05-09  |  14KB  |  443 lines

  1. /*
  2. **    $Id: ModemPanel.c,v 1.5 92/04/21 16:59:07 olsen Sta Locker: olsen $
  3. **    $Revision: 1.5 $
  4. **    $Date: 92/04/21 16:59:07 $
  5. **
  6. **    Editing panel for modem configuration
  7. **
  8. **    Copyright © 1990-1992 by Olaf `Olsen' Barthel & MXM
  9. **        All Rights Reserved
  10. */
  11.  
  12. #include "termGlobal.h"
  13.  
  14. enum    {    GAD_MODEMINIT,GAD_MODEMEXIT,GAD_MODEMHANGUP,GAD_DIALPREFIX,GAD_NOCARRIER,
  15.         GAD_NODIALTONE,GAD_CONNECT,GAD_VOICE,GAD_RING,GAD_BUSY,
  16.         GAD_REDIALDELAY,GAD_DIALRETRIES,GAD_DIALTIMEOUT,GAD_AUTOCAPTURE,
  17.         GAD_AUTOBAUD,GAD_LOG,GAD_CHECK,GAD_DROPDTR,GAD_PASSTHROUGH,GAD_USE,GAD_CANCEL };
  18.  
  19. #define WIDTH    639
  20. #define HEIGHT    179
  21.  
  22. STATIC UBYTE * __saveds
  23. ShowMinutes(struct Gadget *SomeGadget,WORD Level)
  24. {
  25.     STATIC UBYTE Buffer[15];
  26.  
  27.     SPrintf(Buffer,LocaleString(MSG_GLOBAL_SHOW_MINUTES_TXT),Level / 6,(Level % 6) * 10);
  28.  
  29.     return(Buffer);
  30. }
  31.  
  32. STATIC UBYTE * __saveds
  33. ShowSeconds(struct Gadget *SomeGadget,WORD Level)
  34. {
  35.     STATIC UBYTE Buffer[15];
  36.  
  37.     SPrintf(Buffer,LocaleString(MSG_GLOBAL_SHOW_MINUTES_TXT),Level / 60,Level % 60);
  38.  
  39.     return(Buffer);
  40. }
  41.  
  42. STATIC struct Gadget *
  43. CreateAllGadgets(struct Configuration *Config,struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  44. {
  45.     struct Gadget        *Gadget;
  46.     struct NewGadget     NewGadget;
  47.     UWORD             LeftEdge,Counter = 0;
  48.  
  49.     memset(&NewGadget,0,sizeof(struct NewGadget));
  50.  
  51.     if(Gadget = CreateContext(GadgetList))
  52.     {
  53.         NewGadget . ng_Width        = 148;
  54.         NewGadget . ng_Height        = 14;
  55.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_MODEM_INIT_STRING_GAD);
  56.         NewGadget . ng_TextAttr        = &DefaultFont;
  57.         NewGadget . ng_VisualInfo    = VisualInfo;
  58.         NewGadget . ng_GadgetID        = Counter;
  59.         NewGadget . ng_LeftEdge        = (GadToolsLongestString(MSG_MODEMPANEL_MODEM_INIT_STRING_GAD,MSG_MODEMPANEL_BUSY_STRING_GAD) + 2) * 8 + 1;
  60.         NewGadget . ng_TopEdge        = 1 + TopEdge;
  61.  
  62.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  63.             GT_Underscore,    '_',
  64.             GTST_MaxChars,    79,
  65.             GTST_String,    Config -> ModemInit,
  66.             GTST_EditHook,    &CommandHook,
  67.             GA_Immediate,    TRUE,
  68.         TAG_DONE);
  69.  
  70.         LeftEdge = NewGadget . ng_LeftEdge + NewGadget . ng_Width + 8;
  71.  
  72.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_MODEM_EXIT_STRING_GAD);
  73.         NewGadget . ng_GadgetID        = Counter;
  74.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  75.  
  76.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  77.             GT_Underscore,    '_',
  78.             GTST_MaxChars,    79,
  79.             GTST_String,    Config -> ModemExit,
  80.             GTST_EditHook,    &CommandHook,
  81.             GA_Immediate,    TRUE,
  82.         TAG_DONE);
  83.  
  84.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_MODEM_HANGUP_STRING_GAD);
  85.         NewGadget . ng_GadgetID        = Counter;
  86.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  87.  
  88.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  89.             GT_Underscore,    '_',
  90.             GTST_MaxChars,    79,
  91.             GTST_String,    Config -> ModemHangup,
  92.             GTST_EditHook,    &CommandHook,
  93.             GA_Immediate,    TRUE,
  94.         TAG_DONE);
  95.  
  96.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_DIAL_PREFIX_GAD);
  97.         NewGadget . ng_GadgetID        = Counter;
  98.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  99.  
  100.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  101.             GT_Underscore,    '_',
  102.             GTST_MaxChars,    79,
  103.             GTST_String,    Config -> DialPrefix,
  104.             GTST_EditHook,    &CommandHook,
  105.             GA_Immediate,    TRUE,
  106.         TAG_DONE);
  107.  
  108.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_NO_CARRIER_STRING_GAD);
  109.         NewGadget . ng_GadgetID        = Counter;
  110.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  111.  
  112.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  113.             GT_Underscore,    '_',
  114.             GTST_MaxChars,    15,
  115.             GTST_String,    Config -> NoCarrier,
  116.             GTST_EditHook,    &CommandHook,
  117.             GA_Immediate,    TRUE,
  118.         TAG_DONE);
  119.  
  120.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_NO_DIALTONE_STRING_GAD);
  121.         NewGadget . ng_GadgetID        = Counter;
  122.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  123.  
  124.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  125.             GT_Underscore,    '_',
  126.             GTST_MaxChars,    15,
  127.             GTST_String,    Config -> NoDialTone,
  128.             GTST_EditHook,    &CommandHook,
  129.             GA_Immediate,    TRUE,
  130.         TAG_DONE);
  131.  
  132.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_CONNECT_STRING_GAD);
  133.         NewGadget . ng_GadgetID        = Counter;
  134.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  135.  
  136.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  137.             GT_Underscore,    '_',
  138.             GTST_MaxChars,    15,
  139.             GTST_String,    Config -> Connect,
  140.             GTST_EditHook,    &CommandHook,
  141.             GA_Immediate,    TRUE,
  142.         TAG_DONE);
  143.  
  144.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_VOICE_STRING_GAD);
  145.         NewGadget . ng_GadgetID        = Counter;
  146.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  147.  
  148.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  149.             GT_Underscore,    '_',
  150.             GTST_MaxChars,    15,
  151.             GTST_String,    Config -> Voice,
  152.             GTST_EditHook,    &CommandHook,
  153.             GA_Immediate,    TRUE,
  154.         TAG_DONE);
  155.  
  156.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_RING_STRING_GAD);
  157.         NewGadget . ng_GadgetID        = Counter;
  158.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  159.  
  160.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  161.             GT_Underscore,    '_',
  162.             GTST_MaxChars,    15,
  163.             GTST_String,    Config -> Ring,
  164.             GTST_EditHook,    &CommandHook,
  165.             GA_Immediate,    TRUE,
  166.         TAG_DONE);
  167.  
  168.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_BUSY_STRING_GAD);
  169.         NewGadget . ng_GadgetID        = Counter;
  170.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  171.  
  172.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  173.             GT_Underscore,    '_',
  174.             GTST_MaxChars,    15,
  175.             GTST_String,    Config -> Busy,
  176.             GTST_EditHook,    &CommandHook,
  177.             GA_Immediate,    TRUE,
  178.         TAG_DONE);
  179.  
  180.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_REDIAL_DELAY_GAD);
  181.         NewGadget . ng_GadgetID        = Counter;
  182.         NewGadget . ng_LeftEdge        = LeftEdge + (GadToolsLongestString(MSG_MODEMPANEL_REDIAL_DELAY_GAD,MSG_MODEMPANEL_PASS_XON_XOFF_THROUGH_GAD) + 1) * 8;
  183.         NewGadget . ng_Height        = 10;
  184.         NewGadget . ng_Width        = 96;
  185.         NewGadget . ng_TopEdge        = 3 + TopEdge;
  186.  
  187.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  188.             GT_Underscore,        '_',
  189.             GTSL_Min,        0,
  190.             GTSL_Max,        360,
  191.             GTSL_Level,        Config -> RedialDelay,
  192.             GTSL_DispFunc,        ShowMinutes,
  193.             GTSL_LevelFormat,    "%s",
  194.             GTSL_MaxLevelLen,    11,
  195.         TAG_DONE);
  196.  
  197.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_DIAL_RETRIES_GAD);
  198.         NewGadget . ng_GadgetID        = Counter;
  199.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + 15;
  200.  
  201.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  202.             GT_Underscore,        '_',
  203.             GTSL_Min,        0,
  204.             GTSL_Max,        100,
  205.             GTSL_Level,        Config -> DialRetries,
  206.             GTSL_LevelFormat,    "%3ld",
  207.             GTSL_MaxLevelLen,    3,
  208.         TAG_DONE);
  209.  
  210.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_DIAL_TIMEOUT_GAD);
  211.         NewGadget . ng_GadgetID        = Counter;
  212.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + 15;
  213.  
  214.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  215.             GT_Underscore,        '_',
  216.             GTSL_Min,        0,
  217.             GTSL_Max,        1800,
  218.             GTSL_Level,        Config -> DialTimeout,
  219.             GTSL_DispFunc,        ShowSeconds,
  220.             GTSL_LevelFormat,    "%s",
  221.             GTSL_MaxLevelLen,    11,
  222.         TAG_DONE);
  223.  
  224.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_CONNECT_AUTO_CAPTURE_GAD);
  225.         NewGadget . ng_GadgetID        = Counter;
  226.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + 15 - 1;
  227.         NewGadget . ng_Width        = 26;
  228.         NewGadget . ng_Height        = 11;
  229.  
  230.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  231.             GT_Underscore,    '_',
  232.             GTCB_Checked,    Config -> ConnectAutoCapture,
  233.         TAG_DONE);
  234.  
  235.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_CONNECT_AUTO_BAUD_GAD);
  236.         NewGadget . ng_GadgetID        = Counter;
  237.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  238.  
  239.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  240.             GT_Underscore,    '_',
  241.             GTCB_Checked,    Config -> ConnectAutoBaud,
  242.         TAG_DONE);
  243.  
  244.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_LOG_ACTIONS_GAD);
  245.         NewGadget . ng_GadgetID        = Counter;
  246.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  247.  
  248.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  249.             GT_Underscore,    '_',
  250.             GTCB_Checked,    Config -> LogActions,
  251.         TAG_DONE);
  252.  
  253.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_CHECK_CARRIER_GAD);
  254.         NewGadget . ng_GadgetID        = Counter;
  255.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  256.  
  257.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  258.             GT_Underscore,    '_',
  259.             GTCB_Checked,    Config -> CheckCarrier,
  260.         TAG_DONE);
  261.  
  262.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_DROP_DTR_ON_HANGUP_GAD);
  263.         NewGadget . ng_GadgetID        = Counter;
  264.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  265.  
  266.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  267.             GT_Underscore,    '_',
  268.             GTCB_Checked,    Config -> DropDTR,
  269.         TAG_DONE);
  270.  
  271.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_PASS_XON_XOFF_THROUGH_GAD);
  272.         NewGadget . ng_GadgetID        = Counter;
  273.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  274.  
  275.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  276.             GT_Underscore,    '_',
  277.             GTCB_Checked,    Config -> PassThrough,
  278.         TAG_DONE);
  279.  
  280.         NewGadget . ng_Width        = 88;    /* NEW 52 */
  281.         NewGadget . ng_Height        = 12;
  282.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_USE_GAD);
  283.         NewGadget . ng_GadgetID        = Counter;
  284.         NewGadget . ng_Flags        = 0;
  285.         NewGadget . ng_LeftEdge        = 10;
  286.         NewGadget . ng_TopEdge        = HEIGHT - 3 - NewGadget . ng_Height;
  287.  
  288.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  289.             GT_Underscore,    '_',
  290.         TAG_DONE);
  291.  
  292.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_CANCEL_GAD);
  293.         NewGadget . ng_GadgetID        = Counter;
  294.         NewGadget . ng_LeftEdge        = WIDTH - 10 - NewGadget . ng_Width;
  295.  
  296.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  297.             GT_Underscore,    '_',
  298.         TAG_DONE);
  299.     }
  300.  
  301.     return(Gadget);
  302. }
  303.  
  304. BYTE
  305. ModemPanel(struct Configuration *Config)
  306. {
  307.     struct Window    *PanelWindow;
  308.     struct Gadget    *GadgetList = NULL;
  309.     struct Gadget    *GadgetArray[GAD_CANCEL + 1];
  310.  
  311.     CopyMem(Config,&PrivateConfig,sizeof(struct Configuration));
  312.  
  313.     if(CreateAllGadgets(Config,&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  314.     {
  315.         if(PanelWindow = OpenWindowTags(NULL,
  316.             WA_Left,    (Screen -> Width - WIDTH) >> 1,
  317.             WA_Top,        (Screen -> Height - HEIGHT) >> 1,
  318.             WA_Width,    WIDTH,
  319.             WA_Height,    HEIGHT,
  320.  
  321.             WA_Activate,    TRUE,
  322.             WA_DragBar,    TRUE,
  323.             WA_DepthGadget,    TRUE,
  324.             WA_RMBTrap,    TRUE,
  325.             WA_DepthGadget,    TRUE,
  326.             WA_CloseGadget,    TRUE,
  327.             WA_CustomScreen,Screen,
  328.  
  329.             WA_IDCMP,    IDCMP_GADGETDOWN | IDCMP_ACTIVEWINDOW | IDCMP_CLOSEWINDOW | IDCMP_VANILLAKEY | SLIDERIDCMP | CHECKBOXIDCMP | STRINGIDCMP | BUTTONIDCMP,
  330.  
  331.             WA_Title,    LocaleString(MSG_MODEMPANEL_MODEM_PREFERENCES_TXT),
  332.         TAG_DONE))
  333.         {
  334.             struct IntuiMessage    *Massage;
  335.             ULONG             Class,Code;
  336.             struct Gadget        *Gadget;
  337.             BYTE             Terminated = FALSE;
  338.  
  339.             PushWindow(PanelWindow);
  340.  
  341.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  342.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  343.             GT_RefreshWindow(PanelWindow,NULL);
  344.  
  345.             ActiveGadget = NULL;
  346.  
  347.             while(!Terminated)
  348.             {
  349.                 WaitPort(PanelWindow -> UserPort);
  350.  
  351.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  352.                 {
  353.                     Class    = Massage -> Class;
  354.                     Code    = Massage -> Code;
  355.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  356.  
  357.                     GT_ReplyIMsg(Massage);
  358.  
  359.                     if(Class == IDCMP_VANILLAKEY)
  360.                         KeySelect(GadgetArray,GAD_CANCEL,Code,PanelWindow,&Gadget,&Class,&Code);
  361.  
  362.                     if(Class == IDCMP_ACTIVEWINDOW && ActiveGadget)
  363.                         ActivateGadget(ActiveGadget,PanelWindow,NULL);
  364.  
  365.                     if(Class == IDCMP_GADGETDOWN)
  366.                     {
  367.                         if((Gadget -> GadgetType & GTYP_GTYPEMASK) == GTYP_STRGADGET)
  368.                             ActiveGadget = Gadget;
  369.                     }
  370.  
  371.                     if(Class == IDCMP_CLOSEWINDOW)
  372.                         Terminated = TRUE;
  373.  
  374.                     if(Class == IDCMP_MOUSEMOVE)
  375.                     {
  376.                         switch(Gadget -> GadgetID)
  377.                         {
  378.                             case GAD_REDIALDELAY:    Config -> RedialDelay = Code;
  379.                                         break;
  380.  
  381.                             case GAD_DIALRETRIES:    Config -> DialRetries = Code;
  382.                                         break;
  383.  
  384.                             case GAD_DIALTIMEOUT:    Config -> DialTimeout = Code;
  385.                                         break;
  386.  
  387.                             default:        break;
  388.                         }
  389.                     }
  390.  
  391.                     if(Class == IDCMP_GADGETUP)
  392.                     {
  393.                         switch(Gadget -> GadgetID)
  394.                         {
  395.                             case GAD_USE:        Terminated = TRUE;
  396.  
  397.                                         strcpy(Config -> ModemInit,    GT_STRING(GadgetArray[GAD_MODEMINIT]));
  398.                                         strcpy(Config -> ModemExit,    GT_STRING(GadgetArray[GAD_MODEMEXIT]));
  399.                                         strcpy(Config -> ModemHangup,    GT_STRING(GadgetArray[GAD_MODEMHANGUP]));
  400.                                         strcpy(Config -> DialPrefix,    GT_STRING(GadgetArray[GAD_DIALPREFIX]));
  401.                                         strcpy(Config -> NoCarrier,    GT_STRING(GadgetArray[GAD_NOCARRIER]));
  402.                                         strcpy(Config -> NoDialTone,    GT_STRING(GadgetArray[GAD_NODIALTONE]));
  403.                                         strcpy(Config -> Connect,    GT_STRING(GadgetArray[GAD_CONNECT]));
  404.                                         strcpy(Config -> Voice,        GT_STRING(GadgetArray[GAD_VOICE]));
  405.                                         strcpy(Config -> Ring,        GT_STRING(GadgetArray[GAD_RING]));
  406.  
  407.                                         Config -> ConnectAutoCapture    = GT_CHECKED(GadgetArray[GAD_AUTOCAPTURE]);
  408.                                         Config -> ConnectAutoBaud    = GT_CHECKED(GadgetArray[GAD_AUTOBAUD]);
  409.                                         Config -> LogActions        = GT_CHECKED(GadgetArray[GAD_LOG]);
  410.                                         Config -> CheckCarrier        = GT_CHECKED(GadgetArray[GAD_CHECK]);
  411.                                         Config -> DropDTR        = GT_CHECKED(GadgetArray[GAD_DROPDTR]);
  412.                                         Config -> PassThrough        = GT_CHECKED(GadgetArray[GAD_PASSTHROUGH]);
  413.  
  414.                                         break;
  415.  
  416.                             case GAD_CANCEL:    Terminated = TRUE;
  417.  
  418.                                         CopyMem(&PrivateConfig,Config,sizeof(struct Configuration));
  419.  
  420.                                         break;
  421.  
  422.                             default:        break;
  423.                         }
  424.                     }
  425.                 }
  426.             }
  427.  
  428.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  429.  
  430.             PopWindow();
  431.  
  432.             CloseWindow(PanelWindow);
  433.         }
  434.     }
  435.  
  436.     FreeGadgets(GadgetList);
  437.  
  438.     if(memcmp(&PrivateConfig,Config,sizeof(struct Configuration)))
  439.         return(TRUE);
  440.     else
  441.         return(FALSE);
  442. }
  443.